package com.haixiaoke.saas.contract.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.haixiaoke.saas.common.annotation.Excel;
import com.haixiaoke.saas.common.core.domain.BaseEntity;
import com.haixiaoke.saas.house.domain.House;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * 业主合同管理对象 biz_proprietor_contract
 *
 * @author xiaolong
 * @date 2024-05-27
 */
@Data
public class ProprietorContract extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 业主合同id
     */
    private String proprietorContractId;

    /**
     * 房屋id
     */
    @Excel(name = "房屋id")
    private String houseId;

    /**
     * 业主id
     */
    @Excel(name = "业主id")
    private Long proprietorUserId;

    /**
     * 租户id
     */
    @Excel(name = "租户id")
    private String tenantId;

    /**
     * 合同状态:1.签署中;2.签署完成;3.已终止;4.已逾期
     */
    @Excel(name = "合同状态:1.签署中;2.签署完成;3.已终止;4.已逾期")
    private String contractStatus;

    /**
     * 押金
     */
    @Excel(name = "押金")
    private BigDecimal cashPledge;

    /**
     * 月租金
     */
    @Excel(name = "月租金")
    private BigDecimal monthRent;

    /**
     * 合同流程id
     */
    @Excel(name = "合同流程id")
    private String flowId;

    /**
     * 合同模版id
     */
    @Excel(name = "合同模版id")
    @NotNull(message = "请选择合同模版")
    private String contractTemplateId;

    /**
     * 合同模版名称
     */
    @Excel(name = "合同模版名称")
    private String contractTemplateName;

    /**
     * 合同内容
     */
    @Excel(name = "合同内容")
    private String contractContent;

    /**
     * 合同模板内容
     */
    @Excel(name = "合同模板内容")
    private String templateContent;

    /**
     * 合同类型:1.房屋委托合同;2.代理服务合同
     */
    @Excel(name = "合同类型:1.房屋委托合同;2.代理服务合同")
    @NotNull(message = "请选择合同类型")
    private String cooperationType;

    /**
     * 签署方式:1.电子合同;2.纸质合同
     */
    @Excel(name = "签署方式:1.电子合同;2.纸质合同")
    @NotNull(message = "请选择签署方式")
    private String signingMode;

    /**
     * 合同编号
     */
    @Excel(name = "合同编号")
    private String contractNumber;

    /**
     * 合同图片
     */
    @Excel(name = "合同图片")
    private String contractImage;

    /**
     * 服务期限年份
     */
    @Excel(name = "服务期限年份")
    private Long servicePeriodYear;

    /**
     * 服务期限月份
     */
    @Excel(name = "服务期限月份")
    private Long servicePeriodMonth;

    /**
     * 筹备期
     */
    @Excel(name = "筹备期")
    private Long preparatoryPeriod;

    /**
     * 最晚签约日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最晚签约日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date latestSigningDate;

    /**
     * 租赁开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租赁开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date leaseStartDate;

    /**
     * 租赁结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租赁结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date leaseEndDate;

    /**
     * 甲方签署标识(0,没签,1.已签)
     */
    private String partyASignFlag;

    /**
     * 乙方签署标签(0,没签,1.已签)
     */
    private String partyBSignFlag;

    /**
     * 业主合同id集合
     */
    private String[] proprietorContractIds;

    /**
     * 房屋
     */
    private House house;

    /**
     * 房间名称
     */
    @Excel(name = "房间名称")
    private String premisesAddress;

    /**
     * C端逻辑删除标志(0代表存在 2代表删除）
     */
    private String conDelFlag;

    /**
     * 重定向url
     */
    private String redirectUrl;

    /**
     * 合同图片集合
     */
    @Excel(name = "合同图片集合")
    private List<String> contractImageList;

}
